#pragma once

#include <cstdint>

struct ID3D11Buffer;
struct ID3D11ShaderResourceView;
struct ID3D11UnorderedAccessView;

namespace emitterScene {
	struct Settings;

	struct Resources {
		// Resources
		ID3D11ShaderResourceView* mQuadTextureSRV;

		//
		// Compute shader resources
		//

		// Entities position in world space
		ID3D11Buffer* mEntitiesPosW;
		ID3D11ShaderResourceView* mEntitiesPosWSRV;
		ID3D11UnorderedAccessView* mEntitiesPosWUAV;

		// Entities velocity in world space
		ID3D11Buffer* mEntitiesVelW;
		ID3D11UnorderedAccessView* mEntitiesVelWUAV;

		Resources(const Settings& settings);

	private:
		void buildEntitiesBuffers(const uint32_t numEntities);
	};
}